# 使用 Node.js 官方镜像作为基础镜像
FROM node:20.19-alpine

# 安装Git和Curl（用于健康检查和定时拉取）
RUN apk add --no-cache git curl

# 设置工作目录
WORKDIR /app

# 克隆指定子目录
RUN git init && \
    git remote add origin https://gitee.com/dnui_zjs/nodejs_harmony_vue.git && \
    git config core.sparseCheckout true && \
    echo "node-server/" >> .git/info/sparse-checkout && \
    git pull --depth 1 origin master && \
    mv node-server/* . && \
    rm -rf node-server

# 安装依赖（生产模式）
RUN npm install --production

# 暴露端口
EXPOSE 3000

# 安装PM2用于进程管理
RUN npm install -g pm2

# 创建定时拉取脚本
RUN echo '#!/bin/sh' > /app/pull.sh && \
    echo 'git pull --depth 1 origin master' >> /app/pull.sh && \
    echo 'npm install --production' >> /app/pull.sh && \
    echo 'pm2 reload all || pm2 start npm --name "node-server" -- start' >> /app/pull.sh && \
    chmod +x /app/pull.sh

# 设置定时任务
RUN echo '0 * * * * /app/pull.sh' > /etc/crontabs/root

# 启动应用和定时任务（启动时先执行一次拉取脚本）
CMD crond && /app/pull.sh && pm2 logs